/*********************************************************************
 * Copyright (C) 2008 by Duncan A. Buell.  All rights reserved.
 * Interface for a class to manipulate a process queue.
 *
 * @author Duncan A. Buell
 * @version 1.00 2009-01-04
**/
public interface IPQ
{
/*********************************************************************
 * Accessors and mutators.
**/
/*********************************************************************
 * Method to return the size of the 'LinkedList'.
 *
 * @return the <code>size</code>.
**/
  public int getSize();

/*********************************************************************
 * General methods.
**/

/*********************************************************************
 * Method to insert a record in sorted order.
 *
 * @param newRecord the <code>ProcessRecord</code> to be inserted.
**/
  public void insert(ProcessRecord newRecord);

/***********************************************************
 * Method to return the record with the highest priority.
 * In an <code>ArrayList</code> implementation this is the record with
 * subscript zero.
 *
 * @return the <code>ProcessRecord</code> record that was found, or null.
**/
  public ProcessRecord max();

/***********************************************************
 * Method to remove the record with the highest priority.
 * In an <code>ArrayList</code> implementation this is the record with
 * subscript zero.
 *
 * @return the <code>ProcessRecord</code> record that was removed, or null.
**/
  public ProcessRecord remove();

/*********************************************************************
 * Method to <code>toString</code> a complete PQ.
**/
  public String toString();

} // public interface IPQ
